package com.test.aop.jdk.proxy;

import java.lang.reflect.*;

/**
 * @author 代廷波
 * @className: JdkProxy
 * @description:
 * @create 2018/11/14 0014-10:43
 **/
public class JdkProxy implements InvocationHandler {
    private Object target;
    //绑定委托对象，并返回代理类
    public  JdkProxy(Object target) {
        this.target = target;
        //绑定该类实现的所有接口，取得代理类
    }
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        Object result = null;//被代理的类型为Object基类
        //这里就可以进行所谓的AOP编程了
        //在调用具体函数方法前，执行功能处理
        System.out.println("使用jdk动态代理 开启事务--");
        result = method.invoke(target, args);
        System.out.println(result);
        System.out.println("使用jdk动态代理 提交事务--");
        //在调用具体函数方法后，执行功能处理
        return result;
    }
}
